var express = require('express')
//数据库模型 CRUD数据库
var User = require('./models/user')
var md5 = require('blueimp-md5')
const user = require('./models/user')

var router = express.Router()

router.get('/', function (req, res) {
    // console.log(req.session.user)
    res.render('index.html', {
        user: req.session.user
    })
   
})

router.get('/login', function (req, res) {
    res.render('login.html')
})

router.post('/login', function (req, res, next) {
    //1.获取表单提交数据req.body
    //2.查询数据库用户名和密码是否正确
    //3.发送响应
    // console.log(req.body)
    var body = req.body
    User.findOne({
        email: body.email,
        password: md5(md5(body.password))
    }, function (err, user) {
        if (err) {
            // return res.status(500).json({
            //     err_code: 500,
            //     message: err.message
            // })
            return next(err)
        }

        if (!user) {
            return res.status(200).json({
                err_code: 1,
                message: 'Email or password is invalid'
            })
        }

        //用户存在 登录成功 记录登录状态session
        req.session.user = user

        res.status(200).json({
            err_code: 0,
            message: 'Ok'
        })
    })
})

router.get('/register', function (req, res) {
    res.render('register.html')
})

router.post('/register', function (req, res, next) {
    //1.获取表单提交数据req.body
    //2.操作数据库:判断该用户是否存在，已存在就不允许注册，不存在，新建用户
    //3.发送响应
    var body = req.body
    User.findOne({
        $or: [ 
            {
                email: body.email
            },
            {
                nickname: body.nickname
            }
        ]
    }, function (err, data) {
        if (err) {
            // return res.status(500).json({
            //     success: false,
            //     message: '服务端错误'
            // })
            return next(err)
        }
        if (data) {
            return res.status(200).json({
                err_code: 1,
                message: 'email or nickname already exits.'
            })
        }


        //对密码进行MD5重复加密
        body.password = md5(md5(body.password))

        new User(body).save(function (err, user) {
            if (err) {
                // return res.status(500).json({
                //     err_code: 500,
                //     message: 'Internal error'
                // })
                return next(err)
            }

            //注册成功，使用session记录用户的登录状态
            req.session.user = user

            //express提供了一个响应方法：json
            //该方法接收一个对象作为参数，会自动帮你把对象转为字符串再发送给浏览器
            res.status(200).json({
                err_code: 0,
                message: 'ok'
            })

            //服务端重定向针对异步请求无效
            // res.redirect('/')
        })   
    })
})

router.get('/logout', function (req, res) {
    //清除登录状态
    //重定向到登录页
    req.session.user = null
    res.redirect('/login') //a链接是同步的 
})
module.exports = router